#include "Encoder.h"


volatile Encoder_type encoder1 = {0,0}, encoder2 = {0,0};


int ENCODER_Calc_v(int encoderCount, int timer_count)
{
	int speed = (int)(encoderCount*1000/timer_count);
	//M/T法测速
	return speed;
}


uint8_t KEY_Flag;


void GROUP1_IRQHandler(void)	//Group1的中断服务函数
{
	uint32_t my_gpio, key1_gpio, key2_gpio, key3_gpio, key4_gpio;
	
	//获取中断信号
	// my_gpio = DL_GPIO_getEnabledInterruptStatus(ENCODER_Port10, ENCODER_Pin10 | ENCODER_Pin20);
	
	key1_gpio =  DL_GPIO_getEnabledInterruptStatus(KEY1_Port, KEY1_Pin);
	key2_gpio =  DL_GPIO_getEnabledInterruptStatus(KEY2_Port, KEY2_Pin);
	key3_gpio =  DL_GPIO_getEnabledInterruptStatus(KEY3_Port, KEY3_Pin);
	key4_gpio =  DL_GPIO_getEnabledInterruptStatus(KEY4_Port, KEY4_Pin);
	
//	//如果是ENCODER_Pin10产生的中断
//	if((my_gpio & ENCODER_Pin10) == ENCODER_Pin10)
//	{
//		if(DL_GPIO_readPins(ENCODER_Port11, ENCODER_Pin11))
//			encoder1.count++;
//		else
//			encoder1.count--;
//	}
//	
//	else if((my_gpio & ENCODER_Pin20) == ENCODER_Pin20)
//	{
//		if(DL_GPIO_readPins(ENCODER_Port21, ENCODER_Pin21))
//			encoder2.count++;
//		else
//			encoder2.count--;
//	}
	
	// 按键部分
	if((key1_gpio & KEY1_Pin) == KEY1_Pin)
	{
		KEY_Flag = KEY_Julge(KEY1_Port, KEY1_Pin);
		if( KEY_Flag == 1 )
		{
			KeyNum[0]++;
		}
	}
	else if((key2_gpio & KEY2_Pin) == KEY2_Pin)
	{
		KEY_Flag = KEY_Julge(KEY2_Port, KEY2_Pin);
		if( KEY_Flag == 1 )
		{
			KeyNum[1]++;
		}
	}
	else if((key3_gpio & KEY3_Pin) == KEY3_Pin)
	{
		KEY_Flag = KEY_Julge(KEY3_Port, KEY3_Pin);
		if( KEY_Flag == 1 )
		{
			KeyNum[2]++;
		}
	}
	else if((key4_gpio & KEY4_Pin) == KEY4_Pin)
	{
		KEY_Flag = KEY_Julge(KEY4_Port, KEY4_Pin);
		if( KEY_Flag == 1 )
		{
			KeyNum[3]++;
		}
	}

   // 清除中断状态
//   DL_GPIO_clearInterruptStatus(ENCODER_Port10, ENCODER_Pin10);
//   DL_GPIO_clearInterruptStatus(ENCODER_Port20, ENCODER_Pin20);
   
   DL_GPIO_clearInterruptStatus(KEY1_Port, KEY1_Pin);
   DL_GPIO_clearInterruptStatus(KEY2_Port, KEY2_Pin);
   DL_GPIO_clearInterruptStatus(KEY3_Port, KEY3_Pin);
   DL_GPIO_clearInterruptStatus(KEY4_Port, KEY4_Pin);
}


// 编码器中断处理程序
// void GROUP1_IRQHandler(void)
// {
//    if (DL_GPIO_readPins(ENCODER_Port10, ENCODER_Pin10)) // P1为高电平
//        gEncoderCount--;
//    else // P1为低电平
//        gEncoderCount++;

//    if (DL_GPIO_readPins(ENCODER_Port11, ENCODER_Pin11)) // P2为高电平
//        gEncoderCount++;
//    else // P0为低电平
//        gEncoderCount--;

//    // 清除中断状态
//    DL_GPIO_clearInterruptStatus(ENCODER_Port10, ENCODER_Pin10);
//    DL_GPIO_clearInterruptStatus(ENCODER_Port20, ENCODER_Pin20);
// }


// // 定时器中断处理程序
// void TIMER_0_INST_IRQHandler(void)
// {
//     // 清除定时器中断状态
//     DL_TimerG_clearInterruptStatus(TIMG6, DL_TIMER_INTERRUPT_ZERO_EVENT);

//     // 计算速度
//     Speed1 = gEncoderCount;
//     gEncoderCount = 0;
// }